package tests;


import java.util.Hashtable;

import javax.naming.Context;
import javax.naming.InitialContext;

import junit.framework.Assert;

import org.junit.After;
import org.junit.Test;

import sessions.LoginSystemRemote;

public class LoginSystemTests {

	private static Context ctx;
	private int userId1,userId2;
	/**
	 * Riferimento al loginSystemRemote
	 */
	private static LoginSystemRemote loginSystemRemote;
	
	public LoginSystemTests() throws Exception{

		ctx = getInitialContext();
		loginSystemRemote=(LoginSystemRemote) ctx
				.lookup("Progetto/LoginSystem/remote");

	}
	
	@After
	public void eraseAllData(){
		loginSystemRemote.eraseUser(userId1);
		loginSystemRemote.eraseUser(userId2);
		
	}
	
	/**
	 * Controlla che l'inserimento di un utente funzioni correttamente
	 */
	@Test
	public void userLogin(){
		
		userId1 = loginSystemRemote.insertUser("matteo.neri@yahoo.it", "Matteo", "Neri", "MATTEO", "1980/01/01", "023457234", "3334256712");
		userId2 = loginSystemRemote.insertUser("andrea.bianchi@hotmail.it", "Andrea", "Bianchi", "ANDREA", "1988/02/03", "062345654", "3490861235");
		
		Assert.assertEquals("matteo.neri@yahoo.it", loginSystemRemote.getUserByID(userId1).getEmail());
		
		Assert.assertEquals("andrea.bianchi@hotmail.it", loginSystemRemote.getUserByID(userId2).getEmail());
		
	}
	
	/**
	 * Ottiene il Context utilizzato in seguito per ottenere i riferimenti ai RemoteSystems
	 * @return Context utilizzato per la lookUp
	 * @throws Exception Eccezione lanciata nel caso il metodo non riesca ad ottenere il Context
	 */
	static public Context getInitialContext() throws Exception{

		Hashtable<String,String> env = new Hashtable<String,String>();

		env.put(Context.INITIAL_CONTEXT_FACTORY, "org.jnp.interfaces.NamingContextFactory");
		env.put(Context.PROVIDER_URL, "localhost:1099");

		return new InitialContext(env);

		}

}